struct SearchPath_BST
{
	struct FileDescriptor *data;	//A node can be a directory or a file's file descriptor and node.locationfullpath gives path of the 						file to be searched.
	struct SearchPath_BST *left;
	struct SearchPath_BST *right;
	struct SearchPath_BST *parent;
};
struct SearchPath_BST *bst_root;
struct FileDescriptor *data_fd;
void initialize_BST();
void inorder(struct SearchPath_BST *temp);
struct SearchPath_BST* search(struct SearchPath_BST* node,char* search_val);
struct SearchPath_BST* treeMinimum(struct SearchPath_BST * node);
struct SearchPath_BST * getSuccessor(struct SearchPath_BST * root, struct SearchPath_BST * x);
void delete_node(struct SearchPath_BST *root, char *path);
void transplant(struct SearchPath_BST *root,struct SearchPath_BST* u,struct SearchPath_BST* v);
void insert_node(struct FileDescriptor* ins_val );
